今天是最後一天了,我們來看看這幾天以來,我們都學會了什麼。
首先,在 Day 02 時,我們看過了怎麼開啟一個 embeddedServer 服務,並且看到了使用工廠模式的 NettyApplicationEngine。
Day 03 時,我們看到了路由的設置,並且接觸了我們的第一個 Ktor 套件,BaseRouteScopedPlugin。
Day 04 和 Day 5 時,我們看到了路由套件是怎麼設置 HTTP 路徑的,並且看到了 Ktor 使用 data class 和 enum class 來定義路由的方式,以及如何解析輸入的路徑。
Day 06 和 Day 07 我們看到了回傳內容的處理,雖然邏輯相對複雜,但是透過註解的協助,我們還是釐清了 call.respondText() 的邏輯,並且稍微窺見了一點點 Ktor 利用協程提高系統效率的部分。
Day 08 我們看到了靜態檔案處理的部分,Day 09、 Day 10 Day 11則是看到了 HTML DSL 的定義方式。這邊我們學到了 Ktor 如何利用 HTMLTag 物件來生成 HTML 內容。這邊使用了很多的 Kotlin 小技巧,像是 inline 和 crossinline 語法,還有 unaryPlus 這個 operator fun。
Day 12 和 Day 13我們看了 ContentNegotiation 這個處理輸出內容的套件,以及他怎麼建立 JsonBuilder 來生成 json 格式的輸出。
Day 14 和 Day 15 我們看到了怎麼用類似的邏輯,將收到的請求和回傳轉換成開發者自定義的類別。
Day 16 開始,我們進入到了 Ktor 存取第三方 API 的功能。裡面我們看到了 CIOEngine 和 HttpClient 等類別,並在 Day 17 Day 18 這幾天仔細的看過了傳送第三方資料的邏輯。
Day 19 和 Day 20 我們看到了使用 Form data 傳輸資料的方式,這也讓我們學到如何傳輸檔案類型的內容,到第三方 API 內。這邊我們也看到了 Ktor 善用了 Kotlin 語法內的 List 類別,將檔案切成 List<PartData> 來進行傳輸。
Day 21 開始,我們就進入到了 webSocket 的內容,Day 22 Day 23 我們看到了 Ktor 如何建立一個 webSocket 的路徑,也簡單的帶到了 RFC 6455 這份定義 webSocket 實作的文件。Day 24 我們更進一步的看了 Ktor 內 Frame
的實作。
前面這幾天的經驗,讓我們可以更好的在 Day 25 讓 webSocket 之間互動,以及在 Day 26 撰寫存取第三方的 client.webSocket。
最後在 Day 27、Day 28 和 Day 29,我們進入到了一個 Ktor v2.2.0 才開始提供的內容。我們利用 createApplicationPlugin 建立了自己的 Ktor 套件,並且試著定義了 onCall onCallReceive 等事件,存取了 Ktor 所拿到的 call.request 和 call.response 等物件。
希望這近一個月以來,可以讓各位讀者對 Ktor 的實作更加熟悉,也同時對一個框架該提供怎樣的功能有更高的掌握。
今年的鐵人賽就到這邊了!大家明年見!